Transportieren?
Eine Tabelle können Sie entweder als “Anwendungstabelle” oder als “Customizingtabelle” klassifizieren. Dies hat Auswirkungen auf den Pflegedialog: Eine Anwendungstabelle kann in jedem System geändert werden, eine Customizingtabelle kann nur geändert werden, wenn das System auf “änderbar” gesetzt ist. Anwendungsdaten können nicht transportiert werden… Oder doch?
Im folgenden Fall möchte ich Ihnen eine Lösung vorstellen, bei der Sie eine Tabelle in jedem System pflegen können und trotzdem Einträge aus dem Entwicklungsystem transportiert werden.
In diesem Fall werden automatisch neue Einträge in einen Transportauftrag übernommen. Bereits vorhandene Einträge werden nicht transportiert. Für neue Einträge hingegen wird ein Transportauftrag verlangt.
Um das zu realisieren, müssen Sie folgendes tun:
1. Tabelle anlegen
Legen Sie eine Customizingtabelle ZMYTAB an (Auslieferungsklasse “C“).
2. Pflegedialog generieren
Generieren Sie den Pflegedialog dazu.
Aktivieren Sie bitte das Häkchen “Keine oder individuelle Aufzeichnungsroutine”
3. Zeitpunkte und Coding erfassen
Nach dem Generieren des Pflegedialogs springen Sie bitte im Menü in die Zeitpunkte: Umfeld – Modifikationen – Zeitpunkte.
Dort müssen Sie die folgenden Zeitpunkte anlegen:
- Zeitpunkt “01” ZZ_SICHERN_VORHER
- Zeitpunkt “10” ZZ_TRANSPORT_KOPF
- Zeitpunkt “12” ZZ_TRANSPORTTABELLE_AENDERN
Mit dem Druckknopf neben dem Routinennamen gelangen Sie in das Coding. Das System fragt nach einem Include, in dem die Unterroutinen angelegt werden sollen. Definieren Sie gegebenenfalls ein neues Include.
Coding für Zeitpunkt 01
Hier wird vor dem Sichern das Kennzeichen geändert, dass normalerweise bei “Keine Aufzeichnungsroutine” aktiv ist und den Transport verhindert.
FORM zz_sichern_vorher.
PERFORM zz_check_transport.
ENDFORM.
Coding für Zeitpunkt 10
FORM zz_transport_kopf.
PERFORM zz_check_transport.
ENDFORM.
Coding für Zeitpunkt 12
Beim Ändern der Transporttabelle werden alle Einträge wieder rausgeworfen, die nur geändert oder gelöscht worden sind, so dass nur die neu angelegten Einträge im Transportauftrag stehen.
FORM zz_transporttabelle_aendern.
FIELD-SYMBOLS <key>.
LOOP AT corr_keytab WHERE pgmid = ‘R3TR’
AND object = ‘TABU’
AND objname = x_header-roottab.
*** Keyfeld
ASSIGN corr_keytab-tabkey(x_header-keylen) TO <key>.
*** Alle Einträge zur Tabelle prüfen:
READ TABLE total INTO zmytab_total
WITH KEY <key>.
IF sy-subrc = 0 AND zmytab_total-action <> neuer_eintrag.
*** Wenn der Satz nur geändert oder gelöscht wurde, dann aus der
*** Transporttabelle löschen
DELETE corr_keytab.
ENDIF.
ENDLOOP.
ENDFORM. ” ZZ_TRANSPORTTABELLE_AENDERN
Coding zum Prüfen ob Transportauftrag benötigt wird
Achtung! Bitte setzen Sie bei SY-SYSID Ihr Entwicklungssystem ein!
FORM zz_check_transport.
DATA new.
CLEAR new.
IF sy-sysid = ‘TTE’. “Entwicklungssystem
*** Im Entwicklungssystem wird ein Transportauftrag verlangt,
*** wenn neue Einträge zugefügt wurden
LOOP AT total INTO zmytab_total.
IF zmytab_total-action = neuer_eintrag.
new = ‘X’.
EXIT.
ENDIF.
ENDLOOP.
LOOP AT x_header.
IF new = space.
x_header-flag = vim_transport_denied.
ELSE.
x_header-flag = space.
ENDIF.
MODIFY x_header.
ENDLOOP.
ELSE.
*** In alle anderen Systemen kein Transportanschluß!
LOOP AT x_header.
x_header-flag = vim_transport_denied.
MODIFY x_header.
ENDLOOP.
ENDIF.
ENDFORM.
Globale Datendefinition (Release 4.6C)
Bitte legen Sie noch die folgende Struktur zu Beginn des Includes an:
DATA: BEGIN OF zmytab_total.
INCLUDE STRUCTURE zmytab.
DATA: action(1),
mark(1),
END OF zmytab_total.
Das Coding ist in einem 4.5B-System nicht nötig.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024